#include <stdio.h>
int main()
{
    int arr[3] = {11, 12, 13};
    printf("%p \n", arr);

    int *p = arr;
    printf("%p %p %p %p\n", arr, p, arr + 1, p + 1);

    printf("%d\n", arr[0]);
    printf("%d\n", *(p + 1));
    printf("%d\n", p[1]); // p[1] =====> *(p+1)

    printf("%u %u\n", arr, &arr);
    printf("%u %u\n", arr + 1, &arr + 1);

    int (*p1)[3] = &arr; // 定义了一个指针p 指向的目标元素类型是int
    // int*p[3] []优先级大于* 是一个数组有三个元素 每个元素的类型是指针 指针指向目标的类型是int
    // ()优先级大于[] 首先p1是一个指针 指向一个数组 数组有三个元素 每个元素是 int类型

    printf("%u %u\n", p1, p1 + 1);

    // p1代表整个数组的地址 *p1代表整个数组
    printf("%d\n", (*p1)[0]);
    printf("%d\n", *((*p1) + 1));
    return 0;
}